/**
 * @file WIFILib.h
 * @brief WiFi连接管理库的头文件
 * @details 提供WiFi连接、断开、重连等功能的封装
 */

#ifndef WIFI_LIB_H
#define WIFI_LIB_H

#include <Arduino.h>
#include <WiFi.h>

/**
 * @class WIFILib
 * @brief WiFi连接管理类
 * @details 负责处理WiFi连接的初始化、维护和状态管理
 */
class WIFILib {
public:
    /**
     * @brief 构造函数
     * @param ssid WiFi网络名称
     * @param password WiFi网络密码
     */
    WIFILib(const char* ssid, const char* password);
    
    /**
     * @brief 启动WiFi任务
     * @details 创建并启动WiFi连接维护任务
     */
    void startWiFiTask();
    
    /**
     * @brief 检查WiFi连接状态
     * @return true: 已连接, false: 未连接
     */
    bool isWiFiConnected();
    
    /**
     * @brief 获取本地IP地址
     * @return IPAddress 本地IP地址
     */
    IPAddress getLocalIP();
    
    /**
     * @brief 初始化WiFi连接
     * @return true: 初始化成功, false: 初始化失败
     */
    bool begin();
    
    /**
     * @brief 检查网络连接状态
     * @return true: 网络正常, false: 网络异常
     */
    bool checkNetworkConnection();
    
    /**
     * @brief 等待网络稳定
     * @param timeout 超时时间(毫秒)
     * @return true: 网络稳定, false: 网络不稳定或超时
     */
    bool waitForNetworkStable(int timeout = 5000);

private:
    // 配置参数
    const char* _ssid;        ///< WiFi网络名称
    const char* _password;    ///< WiFi网络密码
    
    /**
     * @brief 初始化WiFi连接
     * @return true: 初始化成功, false: 初始化失败
     */
    bool initializeWiFi();
    
    /**
     * @brief 处理WiFi重连
     * @details 当WiFi断开时自动尝试重连
     */
    void handleWiFiReconnect();
    
    /**
     * @brief 设置WiFi事件处理
     * @details 注册WiFi事件回调函数
     */
    void setupWiFiEvents();
};

#endif // WIFI_LIB_H
